package com.woniuxy.carlife.service.impl;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.woniuxy.carlife.Param.*;
import com.woniuxy.carlife.domain.StoreInfo;
import com.woniuxy.carlife.domain.StoreUser;
import com.woniuxy.carlife.dto.StoreinfoDto;
import com.woniuxy.carlife.mapper.StoreInfoMapper;
import com.woniuxy.carlife.mapper.StoreMapper;
import com.woniuxy.carlife.mapper.TagsMapper;
import com.woniuxy.carlife.service.StoreInfoService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
//import com.woniuxy.carlife.storeinfo.StoreInfoCollect;
//import com.woniuxy.carlife.storeinfo.StoreInfoLikeAndCommentary;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;

/**
 * @ClassName: StoreInfoServiceImpl
 *@Description: 服务实现类
 * @author: yanzhongliang     
 * @date: 2021-04-05
 */

@Service
public class StoreInfoServiceImpl extends ServiceImpl<StoreInfoMapper, StoreInfo> implements StoreInfoService {
    @Resource
    private RedisTemplate redisTemplate;
   @Resource
   private StoreInfoService storeInfoService;
   @Resource
    private StoreInfoMapper storeInfoMapper;
    @Resource
    private StoreMapper storeMapper;
    @Resource
    private TagsMapper tagsMapper;
//    @Resource
//    private RestTemplate restTemplate;

    /**
     * 功能描述〈根据门店ID修改门店点赞量,评论数，门店评分〉
     * @author: yanzhongliang
     * @param: storeId,storeInfoLike，storeInfoCommentary,storeInfoScoring
     * @return: null
     * @Date 2021/4/10 11:20
     * @throws
     */

    @Override
    public void updateStoreInfoLike(Integer storeInfoLike,Integer storeId,Integer storeInfoCommentary,BigDecimal storeInfoScoring) {
//        //调用门店服务模块地址
//        StoreInfoLikeAndCommentaryParam storeInfoLikeAndCommentaryParam= restTemplate.getForObject("http://user-service2/one",StoreInfoLikeAndCommentaryParam.class);
//        //获取门店服务模块传过来的门店ID和点赞量,评论数，门店评分
//        storeId=storeInfoLikeAndCommentaryParam.getStoreId();
//        storeInfoLike=storeInfoLikeAndCommentaryParam.getStoreInfoLike();
//        storeInfoCommentary=storeInfoLikeAndCommentaryParam.getStoreInfoCommentary();
//        storeInfoScoring=storeInfoLikeAndCommentaryParam.getStoreInfoScoring();
//        Date  storeInfoUpdateTime=new Timestamp(new Date().getTime());
//        //调用修改方法
//        storeInfoMapper.updateStoreInfoLike(storeId,storeInfoLike,storeInfoCommentary,storeInfoScoring,storeInfoUpdateTime);

    }

    /**
     * 功能描述〈根据门店ID修改门店营业时间〉
     * @author: yanzhongliang
     * @param: storeId,storeInfoBusiness
     * @return: message
     * @Date 2021/4/10 11:26
     * @throws
     */

    @Override
    public void updateStoreInfoBusiness(String storeInfoBusiness, Integer storeId) {

        //获取当前执行修改方法的时间
        Date  storeInfoUpdateTime=new Timestamp(new Date().getTime());

        //调用修改方法
        storeInfoMapper.updateStoreInfoBusiness(storeInfoBusiness, storeId,storeInfoUpdateTime);
    }

    /**
     * 功能描述〈根据门店ID修改门店手机号〉
     * @author: yanzhongliang
     * @param: storeId,storePhone
     * @return: message
     * @Date 2021/4/12 15:38
     * @throws
     */

    @Override
    public void updateStorePhone(Integer storeId, String storePhone) {
        //获取当前执行修改方法的时间
        Date  storeUpdateTime=new Timestamp(new Date().getTime());

        //调用修改方法
        storeMapper.updateStorePhone(storeId, storePhone, storeUpdateTime);
    }

    /**
     * 功能描述〈根据门店ID修改门店营业状态〉
     * @author: yanzhongliang
     * @param: storeId,storeStatus
     * @return: message
     * @Date 2021/4/12 15:41
     * @throws
     */

    @Override
    public void updateStatus(Integer storeId, String storeStatus) {

        //获取当前执行修改方法的时间
        Date  storeUpdateTime=new Timestamp(new Date().getTime());

        //调用修改方法
        storeMapper.updateStatus(storeId,storeStatus,storeUpdateTime);
    }

    /**
     * 功能描述〈根据门店ID修改门店服务标签（前端展示）〉
     * @author: yanzhongliang
     * @param: storeId,[tagsName]
     * @return: message
     * @Date 2021/4/12 16:08
     * @throws
     */

    @Override
    public void updateTagsName(Integer storeId, String tagsName) {
        //获取当前执行修改方法的时间
        Date  tagsUpdateTime=new Timestamp(new Date().getTime());


        //调用修改方法
        tagsMapper.updateTagsName(storeId,tagsName,tagsUpdateTime);
    }

    /**
     * 功能描述〈根据门店ID修改门店收藏量〉
     * @author: yanzhongliang
     * @param: storeId,storeInfoCollect
     * @return: null
     * @Date 2021/4/10 11:26
     * @throws
     */

    @Override
    public void updateStoreInfoCollect(Integer storeInfoCollect,Integer storeId) {
//        //调用用户模块地址
//        StoreInfoCollectParam storeInfoCollectParam=  restTemplate.getForObject("http://user-service2/one",StoreInfoCollectParam.class);
//
          // 获取用户模块传过来的门店ID和收藏量
//         storeId=storeInfoCollectParam.getStoreId();

            //将传入的收藏量获取出来
//        storeInfoCollect=storeInfoCollectParam.getStoreInfoCollect();

        //获取当前执行修改方法的时间
//         Date  storeInfoUpdateTime=new Timestamp(new Date().getTime());

//        //进行修改
//        storeInfoMapper.updateStoreInfoCollect(storeId,storeInfoCollect,storeInfoUpdateTime);

    }

    /**
     * 功能描述〈根据门店ID修改信誉分〉
     * @author: yanzhongliang
     * @param: storeId,storeInfoCredibility
     * @return: null
     * @Date 2021/4/12 10:02
     * @throws
     */

    @Override
    public void updateStoreInfoCredibility(Integer storeId, BigDecimal storeInfoCredibility) {
//        //调用平台模块地址
//        StoreInfoCredibilityParam storeInfoCredibilityParam=  restTemplate.getForObject("http://user-service2/one",StoreInfoCredibilityParam.class);
//        //获取平台模块传过来的门店ID和信誉分
//        storeId=storeInfoCredibilityParam.getStoreId();
//        storeInfoCredibility=storeInfoCredibilityParam.getStoreInfoCredibility();
//        Date  storeInfoUpdateTime=new Timestamp(new Date().getTime());
//        //调用修改方法
//        storeInfoMapper.updateStoreInfoCredibility(storeId,storeInfoCredibility,storeInfoUpdateTime);
    }

    /**
     * 功能描述〈根据门店ID修改总订单数〉
     * @author: yanzhongliang
     * @param: storeID,storeInfoOrder
     * @return: null
     * @Date 2021/4/12 10:07
     * @throws
     */

    @Override
    public void updateStoreInfoOrder(Integer storeId, Integer storeInfoOrder) {
//        //调用订单模块地址
//        StoreInfoOrderParam storeInfoOrderParam=  restTemplate.getForObject("http://user-service2/one",StoreInfoOrderParam.class);
//        //获取订单模块传过来的门店ID和总订单数
//        storeId=storeInfoOrderParam.getStoreId();
//        storeInfoOrder=storeInfoOrderParam.getStoreInfoOrder();
//        Date  storeInfoUpdateTime=new Timestamp(new Date().getTime());
//        //调用修改方法
//        storeInfoMapper.updateStoreInfoOrder(storeId,storeInfoOrder,storeInfoUpdateTime);
    }


    /**
     * 功能描述〈查询全部门店详情〉
     * @author: yanzhongliang
     * @param: null
     * @return: StoreinfoDto
     * @Date 2021/4/15 11:33
     * @throws
     */

    @Override
    public List<StoreinfoDto> getStoreInfoAndTagsListAll() {
        //调用查询所有门店详情
        List<StoreinfoDto>list=storeInfoMapper.getStoreInfoAndTagsListAll();
        //循环将门店服务标签json字符串转换成List集合存入TagsNames集合中并返回
        for (StoreinfoDto storeinfoDto : list) {
            List<String> lists = JSON.parseObject(storeinfoDto.getTagsName(), List.class);
            storeinfoDto.setTagsNames(lists);
            System.out.println(list.size());
        }
        return list;
    }

}
